package com.miyu.system.service.data;

import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.miyu.system.pojo.system.SysDict;
import com.miyu.system.pojo.system.SysDictDyna;
import com.miyu.system.pojo.system.SysDictItem;
import com.miyu.system.pojo.system.SysTable;
import org.springframework.data.domain.Page;

import java.util.List;

/**
 * 系统数据服务
 * @author miyu
 */
public interface SysDataService {
    /**
     * 编辑系统字典
     * @param param 参数
     * @return {@link JSONObject}
     */
    JSONObject editSysDict(JSONObject param);

    /**
     * 查询系统字典
     * @param param 参数
     * @return {@link JSONArray}
     */
    Page<SysDict> querySysDict(JSONObject param);

    /**
     * 查询系统字典项
     * @param param 参数
     * @return {@link JSONArray}
     */
    List<SysDictItem> querySysDictItem(SysDictItem param);

    /**
     * 查询系统字典细节 动态表
     * @param param 参数
     * @return {@link JSONArray}
     */
    SysDictDyna querySysDictDetail(SysDictDyna param);

    /**
     * ▽系统字典
     * @param params 参数个数
     * @return {@link JSONObject}
     */
    JSONObject delSysDict(JSONArray params);

    /**
     * 缓存系统字典
     * @return {@link JSONObject}
     */
    List<SysDict> cacheSysDict();

    /**
     * 获取字典项通过代码
     * @param code 代码
     * @return {@link JSONArray}
     */
    JSONArray getDictItemByCode(String code);

    /**
     * 获取表名字
     * @return {@link JSONArray}
     */
    JSONArray getTableName();

    /**
     * 获取表列通过表
     * @param param 参数
     * @return {@link JSONArray}
     */
    JSONArray getTableColumnsByTable(JSONObject param);

    /**
     * 系统表编辑
     * @param param 参数
     * @return {@link JSONObject}
     */
    JSONObject sysTableEdit(JSONObject param);

    /**
     * 查询系统表
     * @param param 参数
     * @return {@link JSONArray}
     */
    Page<SysTable> querySysTable(JSONObject param);

    /**
     * ▽系统表
     * @param param 参数
     * @return {@link JSONArray}
     */
    JSONObject delSysTable(JSONArray param);

    /**
     * 查询系统表细节
     * @param sysTable 系统表
     * @return {@link JSONArray}
     */
    JSONArray querySysTableDetail(SysTable sysTable);

    /**
     * 查询系统表显示
     * @param param 参数
     * @return {@link JSONObject}
     */
    JSONObject querySysTableShow(JSONObject param);

    /**
     * 缓存字典项通过代码
     * @param dictCode 字典代码
     * @return {@link JSONArray}
     */
    JSONArray cacheDictItemByCode(String dictCode);

    /**
     * 查询rediskeys
     * @param param
     * @return
     */
    JSONArray queryRedisKeys(JSONObject param);

    /**
     * 查询rediskeysbytype
     *
     * @param param
     * @return
     */
    JSONArray queryRedisKeysByType(JSONObject param);
}
